//
//  UIImage+Extension.swift
//  个人微博
//
//  Created by guo3920591 on 16/4/15.
//  Copyright © 2016年 guo3920591. All rights reserved.
//

import UIKit

extension UIImage {
    
    
    //获取屏幕截图
    class func xl_screenshots() -> UIImage {
        
        let windon = UIApplication.sharedApplication().keyWindow!
        
        //开启图形上下文
        UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, 0)
        
        windon.drawViewHierarchyInRect(UIScreen.mainScreen().bounds, afterScreenUpdates: true)
        
        
     let image = UIGraphicsGetImageFromCurrentImageContext()
      
        
        UIGraphicsEndImageContext()
        
        
        return image
        
    
    }
    
    //分类中使用遍历构造函数需要调用self.init() 创建本类对象  而内方法不用
    class func gxl_singleDimage(color: UIColor) -> UIImage{
        
        //开启一个图片上下文
        
        UIGraphicsBeginImageContextWithOptions(CGSize(width: 1, height: 1), false, UIScreen.mainScreen().scale)
        
        //画图填个颜色
        
        color.setFill()
        
        UIRectFill(CGRect(x: 0, y: 0, width: 1, height: 1))
        
        //从上下文获取图项
        let result = UIGraphicsGetImageFromCurrentImageContext()
        
        //关闭图形上下文
        UIGraphicsEndImageContext()
        
        return result
        
        
    }
    
    /// 异步绘制图像
    func cz_asyncDrawImage(size: CGSize,
        isCorner: Bool = false,
        backColor: UIColor? = UIColor.whiteColor(),
        finished: (image: UIImage)->()) {
            
            // 异步绘制图像，可以在子线程进行，因为没有更新 UI
            dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
                
                // let start = CACurrentMediaTime()
                
                // 如果指定了背景颜色，就不透明
                UIGraphicsBeginImageContextWithOptions(size, backColor != nil, UIScreen.mainScreen().scale)
                
                let rect = CGRect(origin: CGPointZero, size: size)
                // 设置填充颜色
                backColor?.setFill()
                UIRectFill(rect)
                
                // 设置圆角 - 使用路径裁切，注意：写设置裁切路径，再绘制图像
                if isCorner {
                    let path = UIBezierPath(ovalInRect: rect)
                    
                    // 添加裁切路径 - 后续的绘制，都会被此路径裁切掉
                    path.addClip()
                }
                
                // 绘制图像
                self.drawInRect(rect)
                
                let result = UIGraphicsGetImageFromCurrentImageContext()
                
                UIGraphicsEndImageContext()
                
                // print("执行时间 \(CACurrentMediaTime() - start)")
                
                // 主线程更新 UI，提示：有的时候异步也能更新 UI，但是会非常慢！
                dispatch_async(dispatch_get_main_queue()) {
                    finished(image: result)
                }
            }
    }
    
    
    
    
}
